// 前端调试脚本：验证词云API是否返回正确的热点关键词
// 运行方式：node verify_wordcloud_fix.js

// 使用Node.js 22+内置的fetch API，不需要额外安装包

// API配置
const API_BASE_URL = 'http://localhost:5001/api';
const API_ENDPOINTS = {
  WORD_CLOUD: '/trends/wordcloud',     // GET
  TRENDS_STATS: '/trends/stats',       // GET
  TRENDS_ANALYZE: '/trends/analyze'    // POST
};

async function fetchAPI(endpoint, method = 'GET', body = null) {
  const url = `${API_BASE_URL}${endpoint}`;
  console.log(`正在请求: ${url} (${method})`);
  
  try {
    const options = {
      method,
      headers: {
        'Content-Type': 'application/json'
      }
    };
    
    if (body && method !== 'GET') {
      options.body = JSON.stringify(body);
    }
    
    const response = await fetch(url, options);
    
    if (!response.ok) {
      throw new Error(`HTTP错误! 状态码: ${response.status}`);
    }
    
    const data = await response.json();
    console.log(`请求成功，状态码: ${response.status}`);
    return data.data || data; // 处理不同格式的响应，有的返回data字段
  } catch (error) {
    console.error(`请求失败: ${error.message}`);
    return null;
  }
}

async function verifyWordCloudAPI() {
  console.log('=== 开始验证词云API ===');
  
  // 1. 获取词云数据
  const wordCloudData = await fetchAPI(API_ENDPOINTS.WORD_CLOUD);
  
  if (wordCloudData) {
    console.log('\n词云API响应数据:');
    console.log(JSON.stringify(wordCloudData, null, 2));
    
    // 分析词云数据
    if (Array.isArray(wordCloudData)) {
      console.log(`\n词云数据包含 ${wordCloudData.length} 个关键词`);
      
      // 过滤有效数据
      const validWords = wordCloudData.filter(item => 
        item.name && typeof item.name === 'string' && 
        item.value && typeof item.value === 'number'
      );
      
      console.log(`有效关键词数量: ${validWords.length}`);
      
      // 按权重排序，显示前15个关键词
      const topWords = [...validWords]
        .sort((a, b) => b.value - a.value)
        .slice(0, 15);
      
      console.log('\nTop 15 热点关键词:');
      topWords.forEach((word, index) => {
        console.log(`${index + 1}. ${word.name} (权重: ${word.value})`);
      });
      
      // 检测是否包含之前的静态默认词
      const staticDefaultWords = ['科技', 'AI', '元宇宙', '健康', '职场', '研究', '量子计算', '艺术', '数字艺术品'];
      const foundStaticWords = topWords.filter(word => 
        staticDefaultWords.includes(word.name)
      );
      
      if (foundStaticWords.length > 0) {
        console.log('\n⚠️  警告: 发现可能的静态默认词:');
        foundStaticWords.forEach(word => {
          console.log(`  - ${word.name}`);
        });
      } else {
        console.log('\n✅  没有发现静态默认词，后端词云数据看起来正常！');
      }
      
    } else {
      console.log('⚠️  词云数据不是预期的数组格式');
    }
  }
}

async function verifyTrendStatsAPI() {
  console.log('\n\n=== 开始验证统计数据API ===');
  
  const statsData = await fetchAPI(API_ENDPOINTS.TRENDS_STATS);
  
  if (statsData) {
    console.log('\n统计数据API响应:');
    console.log(JSON.stringify(statsData, null, 2));
    
    // 检查统计数据结构
    if (statsData.today_stats) {
      console.log(`\n今日热点数: ${statsData.today_stats.today_hotspots || statsData.today_stats.hotspots_count || '未知'}`);
    }
    
    if (statsData.user_coverage_trend) {
      console.log(`覆盖用户量: ${statsData.user_coverage_trend.current_coverage || statsData.user_coverage_trend.user_coverage || '未知'}`);
    }
  }
}

async function verifyFullAnalysisAPI() {
  console.log('\n\n=== 开始验证完整趋势分析API ===');
  
  try {
    const url = `${API_BASE_URL}${API_ENDPOINTS.TRENDS_ANALYZE}`;
    console.log(`正在请求: ${url} (POST)`);
    
    const response = await fetch(url, {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        include_word_cloud: true,
        include_stats: true,
        include_trends: true
      })
    });
    
    if (!response.ok) {
      throw new Error(`HTTP错误! 状态码: ${response.status}`);
    }
    
    const data = await response.json();
    console.log(`请求成功，状态码: ${response.status}`);
    
    if (data && data.success && data.data) {
      console.log('\n完整趋势分析响应结构:');
      console.log(`- 词云数据: ${Array.isArray(data.data.word_cloud) ? `${data.data.word_cloud.length} 个关键词` : '无'}`);
      console.log(`- 今日统计: ${data.data.today_stats ? '存在' : '无'}`);
      console.log(`- 用户覆盖趋势: ${data.data.user_coverage_trend ? '存在' : '无'}`);
    } else {
      console.log('响应数据格式不符合预期:', data);
    }
    
  } catch (error) {
    console.error(`请求失败: ${error.message}`);
  }
}

// 主函数
async function main() {
  console.log('开始验证词云API修复...');
  
  try {
    // 验证各个API
    await verifyWordCloudAPI();
    await verifyTrendStatsAPI();
    await verifyFullAnalysisAPI();
    
    console.log('\n\n=== 验证完成 ===');
    console.log('如果Top关键词显示的是与当前热点相关的词汇，而不是通用的静态词，则说明修复成功！');
  } catch (error) {
    console.error('验证过程中发生错误:', error);
  }
}

// 运行主函数
main().catch(console.error);